define(function() {
    if (typeof window == "undefined") return {
        load: function(n, r, load) {
            load()
        }
    };
    var head = document.getElementsByTagName("head")[0];
    var engine = window.navigator.userAgent.match(/Trident\/([^ ;]*)|AppleWebKit\/([^ ;]*)|Opera\/([^ ;]*)|rv\:([^ ;]*)(.*?)Gecko\/([^ ;]*)|MSIE\s([^ ;]*)/) || 0;
    var useImportLoad = false;
    var useOnload = true;
    if (engine[1] || engine[7]) useImportLoad = parseInt(engine[1]) < 6 || parseInt(engine[7]) <= 9;
    else if (engine[2]) useOnload = false;
    else if (engine[4]) useImportLoad = parseInt(engine[4]) < 18;
    var cssAPI = {};
    cssAPI.pluginBuilder = "./css-builder";
    var curStyle;
    var createStyle = function() {
        curStyle = document.createElement("style");
        head.appendChild(curStyle)
    };
    var importLoad = function(url, callback) {
        createStyle();
        var curSheet = curStyle.styleSheet || curStyle.sheet;
        if (curSheet && curSheet.addImport) {
            curSheet.addImport(url);
            curStyle.onload = function(){callback()}
        } else {
            curStyle.textContent = '@import "' + url + '";';
            var loadInterval = setInterval(function() {
                try {
                    curStyle.sheet.cssRules;
                    clearInterval(loadInterval);
                    callback()
                } catch(e) {}
            },
            10)
        }
    };
    var linkLoad = function(url, callback) {
        var link = document.createElement("link");
        link.type = "text/css";
        link.rel = "stylesheet";
        if (useOnload) link.onload = function() {
            link.onload = function() {};
            setTimeout(callback, 7)
        };
        else var loadInterval = setInterval(function() {
            for (var i = 0; i < document.styleSheets.length; i++) {
                var sheet = document.styleSheets[i];
                if (sheet.href == link.href) {
                    clearInterval(loadInterval);
                    return callback()
                }
            }
        },
        10);
        link.href = url;
        head.appendChild(link)
    };
    cssAPI.normalize = function(name, normalize) {
        if (name.substr(name.length - 4, 4) == ".css") name = name.substr(0, name.length - 4);
        return normalize(name)
    };
    cssAPI.load = function(cssId, req, load, config) { (useImportLoad ? importLoad: linkLoad)(req.toUrl(cssId + ".css"), load)
    };
    return cssAPI
});